import GCJ_CLASS_TYPE = require('./../../common/GCJ_CLASS_TYPE');
import Serializer = require('./../base/Serializer');
import SJGReplaceItemBase = require('./SJGReplaceItemBase');
import CommonModel = require('./../../common/model/CommonModel');


var CONFIG=require('../../../../common/config');
export  = SJGReplaceItemText;

/**
 * 标题，副标题，文字 的可替换部分
 * @author 
 *
 */
class SJGReplaceItemText extends SJGReplaceItemBase{
    public value: string="";   //  文字内容
    
    // 文字独有属性
    public min: number=0;          // 最小字数
    public max: number=30;         // 最大字数
    public tip: string="";         // 提示文字
    
    // 未排版的字轮廓
    public originContour: string=null;
    
    public constructor(g?) {
        super(g);

        this.ct = GCJ_CLASS_TYPE.CLASS_TYPE_SJGReplaceItemText;
        
    }
    
    // 从json对象(注意不是json字符串)中解析
    public fromJson(jsonObj,versionId) {
        super.fromJson(jsonObj,versionId);
        
        if(jsonObj.hasOwnProperty('value')){
            this.value=jsonObj.value;            
        }
        if(jsonObj.hasOwnProperty('min')) {
            this.min=jsonObj.min*1;
        }
        if(jsonObj.hasOwnProperty('max')) {
            this.max=jsonObj.max*1; 
        }
        if(jsonObj.hasOwnProperty('tip')) {
            this.tip=jsonObj.tip;
        }
    }
    
    // 转成json字符串
    public toJson(): string {
        // 去掉父json字符串的头尾
        var superJson = super.toJson();
        superJson = superJson.substr(1,superJson.length - 2);

        var ret = '{';
        ret += superJson;

        // value
        ret += ',';
        ret += '"value":' + '"';
        ret += this.value.replace(/"/g,'\\\"').replace(/\n/g,'\\n') + '"';
        // min
        ret += ',';
        ret += '"min":';
        ret += this.min;
        // max
        ret += ',';
        ret += '"max":';
        ret += this.max;
        // tip
        ret += ',';
        ret += '"tip":'+'"';
        ret += this.tip.replace(/"/g,'\\\"').replace(/\n/g,'\\n') + '"';


        ret += '}';
        return ret;
    }
    // 获取对象名称
    public getObjetName(): string {
        return "文字";
    }
    //SJG_MARK_APPEND--------------------
    public isContentEmpty():boolean {
        return this.value==null || this.value.length==0;
    }

}//SJG_MARK_END-------------------------
